PROCEDURE read_me_midi_share
  '
   '------------------------------------------------------------------------
   ' 		            c GRAME 1989, 1990, 1991, 1992
   '	          [Yann Orlarey, Herv Lequay, Dominique fober]						
   '------------------------------------------------------------------------
   '***************************************************************************
   type_note        = 0       ! note avec hauteur, vlocit et dure en ms
   type_key_on      = 1       ! Note On avec hauteur et vlocit
   type_key_off     = 2       ! Note Off avec hauteur et vlocit
   type_key_press   = 3       ! Poly KeyPress avec hauteur et pression
   type_ctrl_change = 4       ! Control Change avec controleur et valeur
   type_prog_change = 5       ! Program Change avec numro de programme
   type_chan_press  = 6       ! Channel Pressure avec pression
   type_pitch_wheel = 7       ! Pitch Wheel avec LSB et MSB
   type_song_pos    = 8       ! Song Position Pointer avec LSB et MSB
   type_song_sel    = 9       ! Song Select avec numro de song
   type_clock       = 10      ! Timing Clock
   type_start       = 11      ! Start
   type_continue    = 12      ! Continue
   type_stop        = 13      ! Stop
   type_tune        = 14      ! Tune Request
   type_active_sens = 15      ! Active Sensing
   type_reset       = 16      ! System Reset
   type_sys_ex      = 17      ! System Exclusive de longueur variable
   type_stream      = 18      ! Flot Midi quelconque de longueur variable
   type_private     = 19      ! 19...127  vnement priv  usage libre
   type_process     = 128     ! vnement priv servant au MidiCall
   type_dprocess    = 129     ! vnement priv servant au midi_dtask
   typeQuarterFrame = 130     ! vnement de synchronisation MTC
   typeCtrl14b      = 131     ! controleur 14 bits
   typeNonRegParam  = 132     ! non registered parameter
   typeRegParam     = 133     ! registered parameter
   Tous les vnements suivants sont des vnements de la norme MIDIFILE.
   typeSeqNum       = 134     ! numro de squence
   typeText         = 135     ! vnement texte
   typeCopyright    = 136     ! message copyright
   typeSeqName      = 137     ! nom de squence ou de piste
   typeInstrName    = 138     ! nom dinstrument
   typeLyric        = 139     ! paroles dstines  etre chantes
   typeMarker       = 140     ! marqueur
   typeCuePoint     = 141     ! cue point
   typeChanPrefix   = 142     ! Midi Channel Prefix
   typeEndTrack     = 143     ! fin de piste
   typeTempo        = 144     ! changement de tempo
   typeSMPTEOffset  = 145     ! offset smpte
   typeTimeSign     = 146     ! indication de mesure
   typeKeySign      = 147     ! signature tonale
   typeSpecific     = 148     ! mta evt spcifique  un squenceur
   typeReserved     = 149..254! reserved for future extensions
   type_dead        = 255     ! vnement priv invalid
    '     CODES MIDI
   'Constantes dfinissant les codes de statut Midi.
   note_off     = &H80
   note_on      = &H90
   poly_touch   = &HA0
   control_chg  = &HB0
   program_chg  = &HC0
   after_touch  = &HD0
   pitch_bend   = &HE0
   sysreal_time = &HF0
   sys_ex       = &HF0
   undef_1      = &HF1
   song_pos     = &HF2
   song_sel     = &HF3
   undef_2      = &HF4
   undef_3      = &HF5
   tune         = &HF6
   end_sys_x    = &HF7
   m_clock      = &HF8
   undef_4      = &HF9
   m_start      = &HFA
   m_cont       = &HFB
   m_stop       = &HFC
   undef_5      = &HFD
   act_sense    = &HFE
   m_reset      = &HFF
   '      PORTS MIDI
  ' Constantes dfinissant les ports Modem et Printer.
   port_modem   = 0
   port_printer = 1
   '      CODES DERREURS
   'Constantes dfinissant les codes derreurs renvoys par certaine
   'fonctions de MidiShare.
   midi_err_space   = -1        ! plus de place dans la freeList
   midi_err_refnum  = -2        ! mauvais numero de reference
   midi_err_badtype = -3        ! mauvais type dvnement
   midi_err_index   = -4        ! mauvais index dacces  un vnement
   '      SYNCHRONISATION CODES
   MIDISyncExternal = &H8000     ! bit-15 for external synchronisation
   MIDISyncAnyPort  = &H4000     ! bit-14 for synchronisation on any port
   '      CODES DAPPLICATIONS
   'rfrence de lapplication modifie sous la forme dun long:
   '$rrrrcccc (r= refnum, c=code)
   midi_open_appl     = 1
   midi_close_appl    = 2
   midi_chg_name      = 3
   midi_chg_connect   = 4
   midi_open_modem    = 5
   midi_close_modem   = 6
   midi_open_printer  = 7
   midi_close_printer = 8
   '      STRUCTURES DES EVENEMENTS
   'Tous les vnements sont construits  laide dune ou plusieurs
  ' cellules de taille fixe (16 octets). La plupart ne ncessitent
   'quune seule cellule. Dautres, comme les System Exclusive ncessitent
   'plusieurs cellules chaines.
   '/*----------------Cellule dextension dun System Exclusive---------------*/
   'offset        contenu         type            signification
    ' 0            link           long       lien de chainage cellule suivante
     '4            data           byte       12 octets de donnes
   '/*----------------Cellule dextension dun Private------------------------*/
  ' offset        contenu         type            signification
   '  0            ptr1           long       pointeurs  utiliser librement
    ' 4            ptr2           long       par lapplication
     '8            ptr3           long
     '12           ptr4           long
   '/*----------------Cellule dun vnement normal---------------------------*/
   'offset        contenu         type            signification
    ' 0            link           long       chainage: adresse de levt  suivant
    ' 4            date           long       date de lvnement en ms
    ' 8            ev_type        byte       type de lvnement
    ' 9            refNum         byte       numro de rfrence de lapplication
   ' 10            port           byte       port Midi
    '11            chan           byte       canal Midi
   'puis selon le type de lvnement:
   '----------------------------------- pour un vnement de type note:
    '12            pitch          byte       hauteur de la note
   ' 13            vel            byte       sa vlocit
    '14            dur            word       sa dure
   '----------------------------------- pour un autre message Midi:
   ' 12            data 1         byte       les octets de donne au format
    '13            data 2         byte       de la norme Midi
   ' 14            data 3         byte
    '15            data 4         byte
   '----------------------------------- pour un systme exclusive:
    '12            linkSE         long       pointeur extension system exclusive
   '----------------------------------- pour un message priv:
   ' 12            linkST         long       pointeur extension msg priv
   '----------------------------------- pour MidiFile time signature:
   ' 12            numerateur     byte       le numrateur
   ' 13            denominateur   byte       dnominateur comme puissance ng. de 2
    '14            nClocks        byte       nombre  de clocks Midi par battue
   ' 15            n32nd          byte       nombre de 32nd notes par noire
   '----------------------------------- pour MidiFile key signature:
    '12            ton            byte       0: key of C, 1: 1 sharp -1: 1 flat etc...
    '13            mode           byte       0: major 1: minor
    '14            unused         word       inutilis
   '----------------------------------- pour MidiFile sequence number:
    '12            number         word       numro de la squence
    '14            unused         word       inutilis
   '----------------------------------- pour MidiFile tempo:
    '12            tempo          long       en microsec par Midi quarter note
   '/*----------------En tete de squence-------------------------------------*/
   'offset        contenu         type            signification
    ' 0            first          long       ptr sur le premier vt de la squence
    ' 4            last           long       ptr sur le dernier vt de la squence
     '8            undef1         long       rserv
     '12           undef2         long       rserv
   '/*----------------Filtres Midi--------------------------------------------*/
   'offset        contenu         type            signification
    ' 0            port[16]       word       ports 0  255 : 256 bits
    '32            ev_type[16]    word       types 0  255 : 256 bits
    '64            channel        word       canaux 0  15 :  16 bits
    '80            unused         word       rserv
   '/*----------------Nom dapplication Midi Share----------------------------*/
   'doit etre au format C standard cest  dire, doit se terminer par un
   'zro (indicateur de fin de chaine). De plus, il ne doit pas excder
   '32 caractres ( 0 inclus).
   '/*----------------Infos de synchronisation -------------------------------*/
   'offset        contenu         type            signification
   '  0            time           long       date courante
   '  4            reenter        long       nombre de rentrance de lhorloge
   '  8            mode           word       mode de synchronisation
   ' 10            locked         byte       synchro locked
   ' 11            port           byte       port de synchronisation
   ' 12            start          long       date de dbut de synchronisation
   ' 16            stop           long       date de fin de synchronisation
   ' 20            offset         long       offset de la synchro
   ' 24            speed          long       sa vitesse
   ' 28            breaks         long       nombre de ruptures de synchro
   ' 32            format         word       format de la synchro
   '/*----------------Location smpte -----------------------------------------*/
   'offset        contenu         type            signification
   '  0            format         word       0:24f/s, 1:25f/s, 2:30DFf/s, 3:30f/s
    ' 2            heures         word       0..23
    ' 4            minutes        word       0..59
    ' 6            secondes       word       0..59
    ' 8            frames         word       0..30 (according to format)
   ' 10            fracs          word       0..99 (1/100 of frames)
    '     Dfinition des fonctions et procdures dappel  Midishare
  
  ' Le code de MidiShare proprement dit est charg par MIDSHARE.PRG.
   'Les fonctions et procdures dfinies ci-dessous donnent accs au
   'code rsident de MidiShare par lintermdiaire dun sous-programme
   'assembleur rang dans la variable msh_adr% et contenant le code
   'suivant:      addq.l #4,sp
    '                    trap   #5
    '                   subq.l #4,sp
    '             rts
   'Ce code permet de formatter les paramtres passs en argument aux
   'fonctions et procdures dappel  MidiShare. Lappel des fonctions
   'rsidentes de MidiShare se fait ensuite comme pour les appels
  ' systme (gemdos, bios, xbios): les paramtres sont pousss sur la
  ' pile, puis le numro de la fonction, enfin le programme effectue un
  ' saut vectoris  ladresse pointe par &H94 (vecteur du trap 5 en
  ' principe inutilis, point dancrage de MidiShare qui contient ladresse
  ' dune routine de dispatch qui ralise lappel effectif de la fonction).
  ' Le vecteur &H94 est initialis au chargement par MIDSHARE.PRG.
  ' La variable msh_adr% doit etre initialise par le programme appelant
  ' avant toute utilisation des fonctions ou procdures dfinies ci-dessous,
  ' grace  lappel pralable de la procdure init_midishare.
  
'   Pour plus dinfos sur les procdures suivantes,
 '  voir la documentation dveloppeur MIDISHARE ou laccessoire MIDIHELP
'
RETURN
